﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.Linq;
using QuanLyThuVien.DTO;

namespace QuanLyThuVien.DAO
{
    public class NhanVienDAO
    {
        //lay ra danh sach tat ca cac nhan vien co trong thu vien
        public static DataTable DS_NhanVien()
        {
            NorthwindDataContext db = new NorthwindDataContext();
           
            var nhanVien = from nv in db.NhanViens
                           join bc in db.LoaiBangCaps on nv.MaLoaiBangCap equals bc.MaLoaiBangCap
                           join bp in db.LoaiBoPhans on nv.MaLoaiBoPhan equals bp.MaLoaiBoPhan
                           join cv in db.LoaiChucVus on nv.MaLoaiChucVu equals cv.MaLoaiChucVu
                           join nguoiLap in db.NhanViens on nv.MaNguoiLap equals nguoiLap.MaNhanVien
                           where nv.TinhTrangXoa == 0
                           orderby nv.MaNhanVien
                           select new
                           {
                               nv.MaNhanVien,
                               nv.HoTenNhanVien,
                               nv.NgaySinh,
                               nv.DiaChi,
                               nv.DienThoai,
                               bc.TenLoaiBangCap,
                               bp.TenLoaiBoPhan,
                               cv.TenLoaiChucVu,
                               tenNL = nguoiLap.HoTenNhanVien ,
                               nv.Password,
            
                           };
            DataTable dt = new DataTable();
            dt.Columns.Add("Mã Nhân Viên", typeof(int));
            dt.Columns.Add("Họ Tên", typeof(string));
            dt.Columns.Add("Ngày Sinh", typeof(DateTime));
            dt.Columns.Add("Địa Chỉ", typeof(string));
            dt.Columns.Add("Điện Thoại", typeof(decimal));
            dt.Columns.Add("Bằng Cấp", typeof(string));
            dt.Columns.Add("Bộ Phận", typeof(string));
            dt.Columns.Add("Chức vụ", typeof(string));
            dt.Columns.Add("Người lập", typeof(string));

            foreach (var gtri in nhanVien)
            {
                dt.Rows.Add(gtri.MaNhanVien, gtri.HoTenNhanVien, gtri.NgaySinh, gtri.DiaChi, gtri.DienThoai, gtri.TenLoaiBangCap, gtri.TenLoaiBoPhan, gtri.TenLoaiChucVu , gtri.tenNL);
            }
            
          
            return dt;
        }

        //them mot nhan vien moi
     
        public static void Them_NhanVien(NhanVienDTO nv)
        {
            NorthwindDataContext db = new NorthwindDataContext();
            NhanVien nhanVien = new NhanVien();
            nhanVien.HoTenNhanVien = nv.HoTenNhanVien;
            nhanVien.DiaChi = nv.DiaChi;
            nhanVien.NgaySinh = nv.NgaySinh;
            nhanVien.DienThoai = nv.DienThoai;
            nhanVien.MaLoaiBangCap = nv.MaLoaiBangCap;
            nhanVien.MaLoaiBoPhan = nv.MaLoaiBoPhan;
            nhanVien.MaLoaiChucVu = nv.MaLoaiChucVu;
            nhanVien.TinhTrangXoa = nv.TinhTrangXoa;
            nhanVien.MaNguoiLap = nv.MaNguoiLap;
            nhanVien.Password = 123456;
            db.NhanViens.InsertOnSubmit(nhanVien);
            db.SubmitChanges();
        }

        //xoa nhan vien _ cap nhat lai tinh trang xoa cua nhan vien nay bang 1
        public static void Xoa_NhanVien(NhanVienDTO nv)
        {
            NorthwindDataContext db = new NorthwindDataContext();
            var nVien = db.NhanViens.Single(nhanVien => nhanVien.MaNhanVien == nv.MaNhanVien);
            nVien.TinhTrangXoa = 1;
            db.SubmitChanges();
        }

        //cap nhat 1 nhan vien
        public static void CapNhat_NhanVien(NhanVienDTO nv)
        {
            NorthwindDataContext db = new NorthwindDataContext();
            var nVien = db.NhanViens.Single(nhanVien => nhanVien.MaNhanVien == nv.MaNhanVien);
            nVien.HoTenNhanVien = nv.HoTenNhanVien;
            nVien.NgaySinh = nv.NgaySinh;
            nVien.DiaChi = nv.DiaChi;
            nVien.DienThoai = nv.DienThoai;
            nVien.MaLoaiBangCap = nv.MaLoaiBangCap;
            nVien.MaLoaiBoPhan = nv.MaLoaiBoPhan;
            nVien.MaLoaiChucVu = nv.MaLoaiChucVu;
           db.SubmitChanges();
        }

        //lay ra thong tin cua 1 nhan vien dua tren ma nhan vien cua nguoi do
        public static NhanVien ThongTin_NhanVien(int manv)
        {
            NorthwindDataContext db = new NorthwindDataContext();
            var nVien = db.NhanViens.Single(nhanVien => nhanVien.MaNhanVien == manv);
            return nVien;
            
        }


        //lay ra bo phan cua 1 nhan vien
        public static DataTable BoPhan_NhanVien(int manv)
        {
            NorthwindDataContext db = new NorthwindDataContext();
            var boPhan = from nv in db.NhanViens
                            join bp in db.LoaiBoPhans on nv.MaLoaiBoPhan equals bp.MaLoaiBoPhan
                            where nv.MaNhanVien == manv
                            select new 
                            {
                                bp.TenLoaiBoPhan,
                            };
            DataTable dt = new DataTable();
            dt.Columns.Add("TenLoaiBoPhan", typeof(string));
            foreach (var gtri in boPhan)
            {
                dt.Rows.Add(gtri.TenLoaiBoPhan);
            }
            return dt;

   
        }

        //trung
        public static IEnumerable<NhanVien> GetAllNV()
        {
            NorthwindDataContext context = new NorthwindDataContext();
            IEnumerable<NhanVien> sql = from NV in context.NhanViens where NV.MaLoaiBoPhan == 2 select NV;
            return sql;
        }

        public static IEnumerable<NhanVien> GetThuThu()
        {
            NorthwindDataContext db = new NorthwindDataContext();
            IEnumerable<NhanVien> sql = from S in db.NhanViens where S.MaLoaiBoPhan == 1 select S;
            return sql;
        }


    }
}
